The technology described herein relates to the processing of computer graphics, for example for display on a display screen.
Graphics processing is often performed in plural rendering passes for a scene to be rendered. The use of plural rendering passes can, for example, apply complex visual effects such as shadows and reflections, and thus increase the realism and atmosphere of the final render output for the scene.
For example, an intermediate render output (e.g. a texture, such as a texture for applying shadows or reflections) may be generated for a scene in an intermediate rendering pass and stored in a buffer (e.g. a texture buffer) for use in a subsequent rendering pass. The intermediate rendering pass typically comprises projecting the geometry (e.g. graphics primitives) of the scene onto an intermediate projection surface so as to provide a projection of the scene from a particular point of view (e.g. the point of view of a light source or a reflected position). The projected geometry can then be rasterised to produce fragments and the fragments can then be shaded to generate the intermediate render output.
Then, in a subsequent rendering pass, the stored data for the intermediate render output can be used (e.g. the texture can be applied) when generating the final render output (e.g. a frame for display). The subsequent rendering pass typically comprises projecting the geometry (e.g. graphics primitives) of the scene onto a subsequent projection surface so as to provide a projection of the scene from a different point of view (e.g. the point of view for the output, such as a notional camera position for an output surface, e.g. a display screen surface). The projected geometry can then be rasterised to produce fragments and the fragments can then be shaded to generate the final render output. Shading the fragments using the intermediate render output (e.g. texture) typically involves deriving sampling (e.g. texture) coordinates for the fragments, and then using those sampling coordinates to sample appropriate data in the intermediate render output. The sampled data can then be taken into account when shading the fragments. For example, the sampled data may indicate whether a particular fragment should be shaded with full, partial or zero contribution from a particular light source.
In some arrangements, prior to performing rasterisation in a rendering pass, the geometry for the scene is sorted into tile lists (e.g. lists of primitives) for respective regions or “tiles” of the projection surface in question, with a tile list for a tile indicating the geometry (e.g. primitives) that are projected to be within (to potentially affect) that tile of the projection surface. The geometry listed for the respective tiles can then be processed (e.g. rasterised to produce fragments, which are then shaded) on a tile-by-tile basis to produce the render output for the rendering pass. These tile-based arrangements can significantly reduce the amount of bandwidth and memory that needs to be used at any one time when rendering a scene and/or can facilitate parallel processing.
The Applicants believe that there remains scope for improvements in graphics processing.
The drawings show elements of a data processing system that are relevant to embodiments of the technology described herein. As will be appreciated by those skilled in the art there may be other elements of the data processing system that are not illustrated in the drawings. It should also be noted here that the drawings are only schematic, and that, for example, in practice the shown elements may share significant hardware circuits, even though they are shown schematically as separate elements in the drawings. Like reference numerals are used for like elements where appropriate in the drawings.